
package controladores;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.LinkedList;
import java.util.Vector;
import javax.swing.JOptionPane;
import modelos.*;
import vistas.*;


public class controlador_ordenes implements ActionListener {
    vista_ordenes v_ordendes ;
    modelo_ordenes m_ordenes = new modelo_ordenes();
    modelo_ingrediente m_ingrediente2 ;
    LinkedList<modelo_ingrediente>  lista_ingredientes_2 = new LinkedList<modelo_ingrediente>();
    modelo_producto m_producto = new modelo_producto();
    modelo_producto m_producto_2 ;
    LinkedList<modelo_producto> linfo_productos = new LinkedList<modelo_producto>();
    LinkedList<modelo_producto>  linfo_productos_2= new LinkedList<modelo_producto>();


    public void actionPerformed(ActionEvent e) {
    String boton = e.getActionCommand();
    if (boton.equals("agregar"))
      agregar();
    else if (boton.equals("eliminar"))
      eliminar();
    else if (boton.equals("grabar"))
      registrar();
    }

     public controlador_ordenes(vista_ordenes v_ordenes) {
        this.v_ordendes = v_ordenes;
    }


     void agregar()
    {
         m_ingrediente2= new modelo_ingrediente();
         m_producto_2 = new modelo_producto();
         Vector<String> datos = new Vector<String>();
         int indice = v_ordendes.comboProductos.getSelectedIndex();
         m_producto_2.setId(linfo_productos.get(indice).getId().toString());
         m_producto_2.setNombre(linfo_productos.get(indice).getNombre().toString());
         m_producto_2.setPrecio(linfo_productos.get(indice).getPrecio());
         m_ingrediente2.setCantidad(Float.parseFloat(v_ordendes.txtCantidad.getValue().toString()));
         datos.add(m_producto_2.getId());
         datos.add(m_producto_2.getNombre());
         datos.add(String.valueOf(m_producto_2.getPrecio()));
         datos.add(String.valueOf(v_ordendes.txtCantidad.getValue()));
         v_ordendes.tablemodel.addRow(datos);
         linfo_productos_2.add(m_producto_2);
         lista_ingredientes_2.add(m_ingrediente2);

    }

    void eliminar()
    {
        if(v_ordendes.tablemodel.getRowCount()>0)
        {
         v_ordendes.tablemodel.removeRow(v_ordendes.tabla.getSelectedRow());
         linfo_productos_2.remove(v_ordendes.tabla.getSelectedRow());
         lista_ingredientes_2.remove(v_ordendes.tabla.getSelectedRow());
        }
    }


    void registrar()
    {
     if(vacio())
     {
         float total_general=total();

        m_ordenes.insertar(v_ordendes.txtNombre.getText().toString(),total_general,linfo_productos_2,lista_ingredientes_2);
        JOptionPane.showMessageDialog(v_ordendes,"exito");
        v_ordendes.cancelar();
     }
     else
     {
     JOptionPane.showMessageDialog(v_ordendes,"faltan campos obligatorios, por favor revise");
     }

    }

    public void cargar_combo()
    {
    linfo_productos   = m_producto.get_info();
        for (int i = 0; i < linfo_productos.size(); i++) {
            v_ordendes.comboProductos.addItem(linfo_productos.get(i).getNombre());
        }
    }

   public boolean vacio()
   {

   if(v_ordendes.txtNombre.getText().isEmpty())
       return false;
       else
       return true;
   }

   public float total()
   {
         float total1=0;
         float total2=0;

         for (int i = 0; i < v_ordendes.tablemodel.getRowCount(); i++) {
             total1= Float.parseFloat(v_ordendes.tablemodel.getValueAt(i, 2).toString())*Float.parseFloat(v_ordendes.tablemodel.getValueAt(i, 3).toString());
             total2+=total1;
         }
    return total2;
   }

}
